#ifndef __CMT_SPI3_H
#define __CMT_SPI3_H

#include "typedefs.h"
#include "Global.h"

#define P_CSB		P01
#define P_FCSB	P00
#define P_SCLK	P03
#define P_SDIO	P02
#define P_GPIO3	P04	

#define cmt_spi3_csb_out()      SET_GPIO_OUT(CMT_CSB_GPIO)
#define cmt_spi3_fcsb_out()     SET_GPIO_OUT(CMT_FCSB_GPIO)
#define cmt_spi3_sclk_out()     SET_GPIO_OUT(CMT_SCLK_GPIO)
#define cmt_spi3_sdio_out()     do{GPIO_DISABLE_UP(P0UP,GPIO_PIN_2); GPIO_ENABLE_OUTPUT(P0TRIS,GPIO_PIN_2);}while(0)
#define cmt_spi3_sdio_in()      do{GPIO_ENABLE_UP(P0UP,GPIO_PIN_2); GPIO_ENABLE_INPUT(P0TRIS,GPIO_PIN_2);}while(0)//SET_GPIO_IN(CMT_SDIO_GPIO)

#define cmt_spi3_csb_1()        P_CSB = 1	//SET_GPIO_H(CMT_CSB_GPIO)
#define cmt_spi3_csb_0()        P_CSB = 0	//SET_GPIO_L(CMT_CSB_GPIO)

#define cmt_spi3_fcsb_1()       P_FCSB = 1	//SET_GPIO_H(CMT_FCSB_GPIO)
#define cmt_spi3_fcsb_0()       P_FCSB = 0	//SET_GPIO_L(CMT_FCSB_GPIO)
    
#define cmt_spi3_sclk_1()       P_SCLK = 1	//SET_GPIO_H(CMT_SCLK_GPIO)
#define cmt_spi3_sclk_0()       P_SCLK = 0	//SET_GPIO_L(CMT_SCLK_GPIO)

#define cmt_spi3_sdio_1()       P_SDIO = 1	//SET_GPIO_H(CMT_SDIO_GPIO)
#define cmt_spi3_sdio_0()       P_SDIO = 0	//SET_GPIO_L(CMT_SDIO_GPIO)
#define cmt_spi3_sdio_read()    P_SDIO			//READ_GPIO_PIN(CMT_SDIO_GPIO)


 void cmt_spi3_delay(void);
 void cmt_spi3_delay_us(void);

void cmt_spi3_init(void);

void cmt_spi3_send(u8 data8);
u8 cmt_spi3_recv(void);

void cmt_spi3_write(u8 addr, u8 dat);
void cmt_spi3_read(u8 addr, u8* p_dat);

void cmt_spi3_write_fifo(const u8* p_buf, u16 len);
void cmt_spi3_read_fifo(u8* p_buf, u16 len);

void cmt_spi3_PowerSave(void);

#endif
